打造自己的项目构建-脚手架
# 打造自己的项目构建-脚手架
[TOC]
# 一、基本搭建
# 1.1 commander模块
参考教程:Commander.js 中文文档(cli必备) (opens new window)
$ mkdir lin-cli
$ cd lin-cli
// 用来编写指令和处理命令行
$ yarn add commander
$ dir // node_modules package.json yarn.lock
1
2
3
4
5
2
3
4
5
- 具体用法:
// 导入commander
const program = require("commander");
// 定义指令
program
// 设置当前脚本的版本信息,会自动给当前命令添加一个-V,--version的选项
// 设置第二个参数则可以使用-v, -V, --version选项
// 默认-h参看使用说明
.version('0.0.1','-v, -V, --version')
// 设置使用说明
.usage('this is a instruction')
// 设置命令参数
// [v]可选形参,<v>必选形参
.arguments('<v>')
// 设置选项,第二个参数是说明
.option('-a, --all','see all messages', function(){
// 调用该option处理的事件
console.log('you used --all!');
})
// 设置命令
.command('init', 'Generate a new project from a template')
.action(() => {
// 回调函数
})
// 解析命令行参数
program.parse(process.argv);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 1.2 chalk模块
// 用来修改控制台输出内容样式
$ yarn add chalk
1
2
2
- 具体用法:
const chalk = require('chalk');
const error = chalk.bold.red;
const warning = chalk.keyword('orange');
console.log(error('Error!'));
console.log(warning('Warning!'));
1
2
3
4
5
6
7
2
3
4
5
6
7
# 1.3 fs模块
参考教程:https://juejin.im/post/5b9768b2e51d450e9942eb98#heading-49
fs是filesystem的缩写,提供本地文件的读写能力,无需额外安装。
- 具体使用
const fs = require('fs');
// 输出当前目录路径
console.log(__dirname);
let files = fs.readdirSync(__dirname);
// 输出当前目录下的文件
console.log(files);
1
2
3
4
5
6
7
2
3
4
5
6
7
# 二、项目构建
# 三、发布
# 3.1 注意事项
- 在要执行的具体脚本的最开始加上
// index.js
// 用来系统自动添加环境变量
#!/usr/bin/env node
1
2
3
2
3
在项目的package.json文件的bin字段中添加脚本的路径。
每次有改动,都应该改动版本并重新发布。
"name": "guli-cli",
"version": "1.0.0",
"bin": {
"guli": "bin/index.js"
}
1
2
3
4
5
2
3
4
5
- 如果曾经该过其他镜像源,可以使用
$ npm publish --registry http://registry.npmjs.org
1
# 3.2 发布
$ npm login
$ npm publish
1
2
2
# 3.3 安装使用
// global位置不能乱
$ yarn global add guli-cli
// 使用时可以直接以guli开头
1
2
3
4
2
3
4